package com.cysoft.third.echarts.component.brush;

import java.util.Arrays;
import java.util.List;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-third-echarts
 * @package com.cysoft.third.echarts.component.brush
 * @date 2025/3/12 12:36
 * @desc 区域选择组件，用户可以选择图中一部分数据，从而便于向用户展示被选中数据，或者他们的一些统计计算结果
 */
public class Brush {

    /**
     * 组件 ID
     */
    private String id;

    /**
     * 工具箱按钮列表
     * 默认值：['rect', 'polygon', 'keep', 'clear']
     */
    private List<String> toolbox = Arrays.asList("rect", "polygon", "keep", "clear");

    /**
     * 系列联动配置
     */
    private Object brushLink;

    /**
     * 可刷选的系列索引
     * 默认值：'all'
     */
    private Object seriesIndex = "all";

    /**
     * 可刷选的地理坐标系索引
     */
    private Object geoIndex;

    /**
     * 可刷选的 X 轴索引
     */
    private Object xAxisIndex;

    /**
     * 可刷选的 Y 轴索引
     */
    private Object yAxisIndex;

    /**
     * 默认刷子类型
     * 可选：'rect', 'polygon', 'lineX', 'lineY'
     * 默认值：'rect'
     */
    private String brushType = "rect";

    /**
     * 默认刷子模式
     * 可选：'single', 'multiple'
     * 默认值：'single'
     */
    private String brushMode = "single";

    /**
     * 选框是否可调整
     * 默认值：true
     */
    private Boolean transformable = true;

    /**
     * 选框样式
     */
    private BrushStyle brushStyle;

    /**
     * 事件节流类型
     * 可选：'debounce', 'fixRate'
     * 默认值：'fixRate'
     */
    private String throttleType = "fixRate";

    /**
     * 事件节流延迟（ms）
     */
    private Integer throttleDelay;

    /**
     * 点击清除选框
     * 默认值：true
     */
    private Boolean removeOnClick = true;

    /**
     * 选中区域内视觉配置
     */
    private BrushVisual inBrush;

    /**
     * 选中区域外视觉配置
     */
    private BrushVisual outOfBrush;

    /**
     * 选框层级
     * 默认值：10000
     */
    private Integer z = 10000;
}
